/**
 * 
 */
package com.peycash.persistencia.dao.impl;

import java.math.BigDecimal;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import com.peycash.dominio.Cliente;
import com.peycash.dominio.EstadosCliente;
import com.peycash.persistencia.PersistenciaException;
import com.peycash.persistencia.dao.ClienteDAO;

/**
 * @author JAMARO
 *
 */
@Repository
public class ClienteDAIOImpl extends BaseDAOImpl<Cliente, BigDecimal> implements
		ClienteDAO {

	
	
	@Override
	public BigDecimal findId(String noCel) throws PersistenciaException{
		try{
			Criteria criteria = getSessionFactory().getCurrentSession().createCriteria(Cliente.class);
			criteria.add(Restrictions.eq("numCel", noCel));
			Cliente cliente = (Cliente) criteria.uniqueResult();
			if(cliente != null){
				return cliente.getIdCliente();
			}else{
				return null;
			}
		}catch(Exception e){
			throw new PersistenciaException("Error en findId:"+e.getMessage(), e);
		}
	}
	
	@Override
	public List<Cliente> findClientesPendientes() throws PersistenciaException{
		try{
			Criteria criteria = getSessionFactory().getCurrentSession().createCriteria(Cliente.class);
			//Byte[] estados = {3,4};
			//criteria.add(Restrictions.in("estadosCliente.idEstadoCliente",estados));
			criteria.add(Restrictions.eq("estadosCliente.idEstadoCliente", (byte)3));
			List<Cliente> list = criteria.list();
			return list;
		}catch(Exception e){
			throw new PersistenciaException("Error en findClientesPendientes:"+e.getMessage(), e);
		}
	}
	
	@Override
	public List<Cliente> findClientesPendientesPorSistema() throws PersistenciaException{
		try{
			Criteria criteria = getSessionFactory().getCurrentSession().createCriteria(Cliente.class);
			criteria.add(Restrictions.eq("estadosCliente.idEstadoCliente", (byte)4));
			List<Cliente> list = criteria.list();
			return list;
		}catch(Exception e){
			throw new PersistenciaException("Error en findClientesPendientes:"+e.getMessage(), e);
		}
	}
	
}
